/**
 * 乒乓球筐
 *
 * nowcoder有两盒（A、B）乒乓球，有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类，并且每种球的数量不少于B盒中的数量，该怎么办呢？
 *
 * 输入描述:
 * 输入有多组数据。
 * 每组数据包含两个字符串A、B，代表A盒与B盒中的乒乓球，每个乒乓球用一个大写字母表示，即相同类型的乒乓球为相同的大写字母。
 * 字符串长度不大于10000。
 *
 * 输出描述:
 * 每一组输入对应一行输出：如果B盒中所有球的类型在A中都有，并且每种球的数量都不大于A，则输出“Yes”；否则输出“No”。
 */

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 将 B 的字母全都加入 map 中, 并记录出现的次数
 * 然后再遍历 A, 遇到相同的字母就减 1
 * 最后只要判断 hash 中是否还有元素就可以了
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(n)
 */

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        // 有输出就向下面找
        while (in.hasNextLine()) {

            String s = in.nextLine();

            // 将输入的字符串分割成 A B
            String[] ss = s.split(" ");

            char[] s1 = ss[0].toCharArray(),
                    s2 = ss[1].toCharArray();

            // map 字母和出现的次数
            Map<Character, Integer> hash = new HashMap<>();

            for (int i = 0; i < s2.length; i++) {

                // 加入 Map
                hash.put(s2[i],
                        hash.getOrDefault(s2[i], 0) + 1);
            }

            for (int i = 0; i < s1.length; i++) {

                // 判断是否存在, 存在则次数减 1
                if (hash.containsKey(s1[i])) {

                    // 要是次数为 1, 这次出了就为 0 了, 删除
                    if (hash.get(s1[i]) == 1) {
                        hash.remove(s1[i]);
                    } else {

                        // 减1
                        hash.put(s1[i],
                                hash.getOrDefault(s1[i], 0) - 1);
                    }
                }
            }

            if(hash.isEmpty()) {

                // 为空就是 yes
                System.out.println("Yes");
            } else {

                // 不为空就是 no
                System.out.println("No");
            }
        }
    }
}